<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../style.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../../print.css" type="text/css" media="print">
<meta content="Expression,ch.tofuse.eval.Expression,eval,toString" name="keywords">
<title>ch.tofuse.eval.Expression</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../../../asdoc.js"></script><script type="text/javascript" language="javascript" src="../../../cookies.js"></script><script type="text/javascript" language="javascript">
<!--
				asdocTitle = 'Expression - flexeval';
				var baseRef = '../../../';
				window.onload = configPage;
			--></script>
<table style="display:none" id="titleTable" cellspacing="0" cellpadding="0" class="titleTable">
<tr>
<td align="left" class="titleTableTitle">flexeval</td><td align="right" class="titleTableTopNav"><a onclick="loadClassListFrame('../../../all-classes.html')" href="../../../package-summary.html">All&nbsp;Packages</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../../all-classes.html')" href="../../../class-summary.html">All&nbsp;Classes</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../../index-list.html')" href="../../../all-index-A.html">Index</a>&nbsp;|&nbsp;<a href="../../../index.html?ch/tofuse/eval/Expression.html&amp;ch/tofuse/eval/class-list.html" id="framesLink1">Frames</a><a onclick="parent.location=document.location" href="" style="display:none" id="noFramesLink1">No&nbsp;Frames</a></td><td rowspan="3" align="right" class="titleTableLogo"><img alt="Adobe Logo" title="Adobe Logo" class="logoImage" src="../../../images/logo.jpg"></td>
</tr>
<tr class="titleTableRow2">
<td align="left" id="subTitle" class="titleTableSubTitle">Class&nbsp;Expression</td><td align="right" id="subNav" class="titleTableSubNav"><a href="#methodSummary">Methods</a></td>
</tr>
<tr class="titleTableRow3">
<td colspan="2">&nbsp;</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
<!--
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("Class Expression"); titleBar_setSubNav(false,false,false,false,false,false,true,false,false,false,false,false,false,false);}
--></script>
<div class="MainContent">
<table cellspacing="0" cellpadding="0" class="classHeaderTable">
<tr>
<td class="classHeaderTableLabel">Package</td><td><a onclick="javascript:loadClassListFrame('class-list.html')" href="package-detail.html">ch.tofuse.eval</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Class</td><td class="classSignature">public class Expression</td>
</tr>
</table>
<p></p>
  A simple expression evaluator.
  <P>
  This is intended for use in simple domain specific languages, and was
  originally written for test configuration.
  <P>
  Example of use:
  
  <PRE>
  var exp:Expression = new Expression(&quot;(x + y)/2&quot;);
  var variables:Array = new Array();  
  variables[&quot;x&quot;] = 4.32;
  variables[&quot;y&quot;] = 342.1;
  
  var result:Number = exp.eval(variables);
  trace(result);
  
  
  </PRE>
  
  <P>
  The following operators are supported:
  <UL>
  <LI>The basic arithmetic operations as provided by the
  class:
  <DL>
  <DT>+</DT>
  <DD>addition</DD>
  <DT>-</DT>
  <DD>subtraction</DD>
  <DT>/DT>
  <DD>multiplication</DD>
  <DT>/</DT>
  <DD>division (rounds to 34 digits)</DD>
  <DT>%</DT>
  <DD>the remainder when dividing the preceding number by the following number
  (this is not module - the result can be negative, rounds to 34 digits)</DD>
  <DT>abs</DT>
  <DD>absolute of the following number (negative numbers have their sign
  reversed)</DD>
  <DT>pow</DT>
  <DD>raise the preceding number to the power of the following number (this
  can only raise to power of positive integers or zero)</DD>
  <DT>int</DT>
  <DD>round the following number to an integer</DD>
  </DL>
  <BR>
  </LI>
  <LI>Ternary (or conditional) expressions. <BR>
  <I>condition ? value-if-condition-is-true : value-if-condition-is-true</I><BR>
  For example:<BR>
  <CODE>x &gt; y ? x : y</CODE><BR>
  Yields the larger of the two variables x and y<BR>
  <BR>
  </LI>
  <LI>The following comparison operations:
  <DL>
  <DT>&lt;</DT>
  <DD>less than</DD>
  <DT>&lt;=</DT>
  <DD>less than or equals</DD>
  <DT>==</DT>
  <DD>equals</DD>
  <DT>&gt;</DT>
  <DD>greater than</DD>
  <DT>&gt;=</DT>
  <DD>greater than or equals</DD>
  <DT>!=</DT>
  <DT>&lt;&gt;</DT>
  <DD>not equals</DD>
  </DL>
  </LI>
  <BR>
  <LI>The following boolean operations:
  <DL>
  <DT>&amp;&amp;</DT>
  <DD>and</DD>
  <DT>||</DT>
  <DD>or</DD>
  </DL>
  </LI>
  </UL>
  
  <P>
  Comparison and boolean operation yield 1 for true, or 0 for false if used
  directly.
  </P>
  
  <P>
  Expressions are evaluated using the precedence rules found in Java, and
  parentheses can be used to control the evaluation order.
  <P>
  <P>
  Example expressions:
  
  <PRE>
  2
  2+2
  100/2
  x/100 17.5
  2 pow 32 - 1
  2 pow (32 - 1)
  2 pow int 21.5
  abs -1.23E-12
  x &gt; y ? x : y
  x &gt; y &amp;&amp; x != 4 ? x : y
  y &gt; 4 ? 4 : z/3
  </PRE>
  
  <p></p>
<br>
<hr>
</div>
<a name="methodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Methods</div>
<table id="summaryTableMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#Expression()">Expression</a>(expression:String)</div>
<div class="summaryTableDescription">
   Construct an {</div>
</td><td class="summaryTableOwnerCol">Expression</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#eval()">eval</a>(variables:Array = null):Number</div>
<div class="summaryTableDescription">
   Evaluate the expression with the given set of values.</div>
</td><td class="summaryTableOwnerCol">Expression</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#toString()">toString</a>():String</div>
<div class="summaryTableDescription">
   Creates a string showing expression as it has been parsed.</div>
</td><td class="summaryTableOwnerCol">Expression</td>
</tr>
</table>
</div>
<script type="text/javascript" language="javascript">
<!--
showHideInherited();
--></script>
<div class="MainContent">
<a name="constructorDetail"></a>
<div class="detailSectionHeader">Constructor detail</div>
<a name="Expression()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">Expression</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">constructor</td>
</tr>
</table>
<div class="detailBody">
<code>public function Expression(expression:String)</code><p>
   Construct an {</p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">expression</span>:String</code> &mdash;              the arithmetic expression to be parsed.
   </td>
</tr>
</table>
</div>
<a name="methodDetail"></a>
<div class="detailSectionHeader">Method detail</div>
<a name="eval()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">eval</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td>
</tr>
</table>
<div class="detailBody">
<code>public function eval(variables:Array = null):Number</code><p>
   Evaluate the expression with the given set of values.
   
   </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">variables</span>:Array</code> (default = <code>null</code>)<code></code> &mdash;              the values to use in the expression.
   </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Number</code> &mdash; the result of the evaluation
   </td>
</tr>
</table>
</div>
<a name="toString()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">toString</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function toString():String</code><p>
   Creates a string showing expression as it has been parsed.
   </p><p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>String</code></td>
</tr>
</table>
</div>
<br>
<br>
<hr>
<br>
<p></p>
<center class="copyright">CONFIDENTIAL. Copyright 2007 to-fuse</center>
</div>
</body>
</html>
<!--CONFIDENTIAL. Copyright 2007 to-fuse-->
